package top.hudk.test;

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.util.Objects;

/**
 * @description: 金额工具类
 * @author: HuDongkang
 * @date: 2021/12/27 16:32
 */
public class AmountUtils {

    /**
     * 货币单位 元 -> 豪 的转换倍数
     */
    public static BigDecimal TEN_THOUSAND = new BigDecimal("10000");

    public static BigDecimal ZERO = BigDecimal.ZERO;

    public static String ZERO_STR = "0.00";


    /**
     * 将货币单位【元】的金额 转成 货币单位为【豪】的金额
     * 如果传入字符串为 null 或 "" ，则返回 0L
     *
     * @param amountStr 金额（单位：元）String 类型，如："30.26"
     * @return 货币单位为【豪】的金额 Long 类型 如：302600
     */
    public static Long convertYuanToHao(String amountStr){
        if (StringUtils.isBlank(amountStr)){
            return ZERO.longValue();
        }
        BigDecimal amount = new BigDecimal(amountStr);
        return amount.multiply(TEN_THOUSAND).longValue();
    }

    /**
     * 将货币单位【元】的金额 转成 货币单位为【豪】的金额
     * 如果传入字符串为 null，则返回 0L
     *
     * @param amountDouble 金额（单位：元）Double 类型，如：30.26D
     * @return 货币单位为【豪】的金额 Long 类型 如：302600
     */
    public static Long convertYuanToHao(Double amountDouble){
        if(Objects.isNull(amountDouble)){
            return ZERO.longValue();
        }
        return convertYuanToHao(String.valueOf(amountDouble));
    }

    public static String convertHaoToYuan(Long amountLong){
        if(Objects.isNull(amountLong)){
            return ZERO_STR;
        }
        BigDecimal amount = new BigDecimal(amountLong);
        return amount.divide(TEN_THOUSAND).toString();
    }


}
